home *** CD-ROM | disk | FTP | other *** search
/ PCMania 64 / PCMania CD64_1.iso / phy / phy004 / files / articulo.t21 < prev    next >
Encoding:
Text File  |  1997-06-09  |  4.7 KB  |  103 lines

  1. ε                            PROGRAMACION 3Dπ
  2. ε                              By Skynetπ
  3. ε=============================================================================π
  4.  
  5.  Hola, en esta segunda parte de esta seccion, vamos a machacar las cosas que 
  6. aprendimos en la δPHYMOSYS IIIπ. En primer lugar, os agradezco el interes que
  7. habeis tenido en esto, ya que han llegado bastantes E-mails, ademas hoy como
  8. prometi a algunos, metere mi lector de archivos de δ3D Studioπ...bueno, empece-
  9. mos!! :)
  10.  
  11. Como vimos la semana pasada, aprendimos a crear una tercera dimension en nues-
  12. tro monitor, a crear pantallas virtuales, las matrices de las operaciones ba-
  13. sicas, crear campos de estrellas, etc...
  14.  
  15. Hoy lo que vamos a hacer es a "coger" esos objetos 3D para meterlos en nuestra
  16. demo. Como los vamos a coger? bueno...pues de eso se encarga mi programa. El
  17. 3D Studio tiene una opcion para salvar los archivos en archivos δ3DSπ o δASCπ. Los
  18. archivos δASCπ son los que nos interesan, porque contienen la lista de vertices,
  19. poligonos y aristas. Para conocer un poco mas el formato vamos a abrir uno re-
  20. cortado:
  21.  
  22. -----------------------------------------------------------------------------
  23. ΓAmbient light color: Red=0.039216 Green=0.039216 Blue=0.039216π
  24.  
  25. ΓNamed object: "Object"π
  26. ΓTri-mesh, Vertices: 660     Faces: 1292π
  27. ΓVertex list:π
  28. ΓVertex 0:  X: -90.999413     Y: 0.000003     Z: 22.282175π
  29. ΓVertex 1:  X: -101.339294     Y: 0     Z: 22.282175π
  30. ΓVertex 2:  X: -101.653366     Y: 0.000003     Z: 24.025192π
  31. ΓVertex 3:  X: -102.086533     Y: 5.03     Z: 25.571856π
  32. Γ.π
  33. Γ.π
  34. Γ.π
  35. ΓVertex 659:  X: 124.625061     Y: 13.499992     Z: 26.994728π
  36. ΓFace list:π
  37. ΓFace 0:    A:1 B:0 C:121 AB:1 BC:1 CA:0π
  38. ΓSmoothing:  17π
  39. ΓFace 1:    A:62 B:61 C:60 AB:1 BC:1 CA:0π
  40. ΓSmoothing:  17π
  41. ΓFace 2:    A:63 B:62 C:60 AB:1 BC:0 CA:0π
  42. Γ.π
  43. Γ.π
  44. Γ.π
  45. ------------------------------------------------------------------------------
  46.  
  47. Aunque no lo veamos ahora, el programa separa en paginas el archivo, cosa que
  48. no he depurado todavia y que por tanto se debe eliminar con un editor para que
  49. todo quede como si fuese una unica pagina. Despues podemos ver que el programa
  50. tiene numerados los vertices. Cada vertice contiene los tres valores en X,Y,Z
  51. y por tanto en nuestro programa hemos creado un δARRAYπ que almacenara variables
  52. con los campos X,Y y Z de forma que el Vertex 0 coincida en la posicion 0 del
  53. array, el Vertex 1 en la posicion 1...etc...
  54.  
  55. Aqui tendremos que "retocar" algo tambien del archivo. Como para nuestro pro-
  56. grama vamos a realizar una conversion a 3D, la variable Y no puede ser nunca 0,
  57. y por tanto debe modificarse. Fijaros en el vertex 1, como veis tiene de valor
  58. 0. lo que haremos sera editarlo y dejarlo por ejemplo:
  59.  
  60. ΓVertex 1:  X: -101.339294     Y: 0.00010     Z: 22.282175π
  61.  
  62. De forma que le pondremos todos los decimales que necesitamos (5 al menos),
  63. aproximando a su valor real. Con esto tambien tendremos que modificar el ver-
  64. tex 3 debido a que no llega ni a 5 decimales. Con su posterior modificacion
  65. quedara:
  66.  
  67. ΓVertex 3:  X: -102.086533     Y: 5.030000     Z: 25.571856π
  68.  
  69. Y nuestro programa ya no tendra problemas.
  70.  
  71. Para acabar de repararlo, el objeto que creamos, si sobrepasa las 80 unidades
  72. se saldra de pantalla, asi que podeis hacerlo pequeño y despues aumentarlo con
  73. el "δaumentadorπ" que he programado en uno de los procedimientos.
  74.  
  75. Una vez comentados los errores que debemos evitar en el programa, pasamos a co-
  76. mo se ha realizado. Una vez hayamos insertado todos los vertices en el array
  77. lo que haremos es insertar los planos en otro array. Este array sera un array
  78. de una variable que tendra de campos A,B y C que son como se especifica un po-
  79. ligono en 3D Studio:
  80.  
  81. ΓFace 0:    A:1 B:0 C:121 AB:1 BC:1 CA:0π
  82.  
  83. Esto significa que la δFACE 0π se compone por el vertice 1,0 y 121 como indican
  84. A, B i C que son los indicadores de poligonos. De esta forma creamos el poligo-
  85. no mas veloz que es el triangulo. (Es el mas rapido debido a que a la hora de
  86. rellenarlo no tiene problemas de intersecciones de lineas, ya que en un trian-
  87. gulo nunca podremos tener ese problema.
  88.  
  89. Bueno, una vez insertado en la memoria, ahora tendremos que crearlo, lo cual
  90. puede ser visto en el codigo en δPASCALπ de φSkynet.pasπ
  91.  
  92. Ademas he creado algunos ejemplos de archivos δASCπ.
  93.  
  94. Ah!! Si mirais bien el codigo fuente, vereis que utilizo una libreria de musi-
  95. ca, esta es para incorporarle sonido a la rotacion...esto lo explicare en el
  96. proximo numero. Espero que os sirva para algo, o en vuestras demos... si lo
  97. utilizais, almenos nombradnos! :)
  98.  
  99. Bueno, nos vemos el próximo número con efectos graficos....
  100. =======================================================================
  101. ∞Skynet Rulez!π
  102. ∞amarfer@alufis34.ffisic.uv.esπ
  103.